// 从有序顺序表中删除其值在给定值s与1之间(要求s<t)的所有元素，若s或t不合理
// 或顺序表为空，则显示出错信息并退出运行。

#pragma once
#include "vector"
#include "iostream"

bool delInRange(std::vector<int> &vec1, int s, int t)
{
    if (s >= t)
    {
        return false;
    }
    int minIndex = -1, maxIndex = -1;
    for (int i = 0; i < vec1.size(); i++)
    {
        if (vec1[i] == s)
        {
            minIndex = i;
        }
        if (vec1[i] == t)
        {
            maxIndex = i;
        }
        if (vec1[i] > t && minIndex > -1 && maxIndex > -1)
        {
            vec1[i - (maxIndex - minIndex + 1)] = vec1[i];
        }
    }
    if (minIndex == -1)
    {
        //没有找到最小的
        return false;
    }
    if (maxIndex == -1)
    {
        //找到最小的，没找到最大的
        maxIndex = vec1.size() - 1;
    }
    vec1.resize(vec1.size() - (maxIndex - minIndex + 1));
    return true;
}

int main()
{
    std::vector<int> vec1;

    //init data
    for (int i = 0; i < 100; i++)
    {
        vec1.push_back(i);
    }
    auto res = delInRange(vec1, 20, 90);
    std::cout << (res ? "succ" : "fail")
              << "\r\n";
    for (auto i : vec1)
    {
        std::cout << i << ",";
    }
    std::cout << "\r\n";
    return 0;
}